<?php

/**
 * 开放商户 - 费率信息变更功能使用示例
 */

require_once __DIR__ . '/../../../vendor/autoload.php';

use JLPay\Core\OrgConfig;
use JLPay\Core\DemoConfig;
use JLPay\Services\Openmerch\Change\ChangeService;
use JLPay\Models\Openmerch\Change\RateInfoChangeRequest;
use JLPay\Utils\Logger;
use JLPay\Utils\DemoRequestHandler;

// =================== 日志配置 =====================
$logger = Logger::getInstance();

// =================== 工具函数 =====================
function createConfig(): OrgConfig
{
    return DemoConfig::createConfigWithCrypto();
}

// =================== 数据构建函数 =====================
function buildRateInfoChangeRequest(): RateInfoChangeRequest
{
    $request = new RateInfoChangeRequest();
    
    // 构建费率信息列表
    $rateInfo = [
        [
            "channel_type" => "01",  // 渠道类型：01-银联
            "fee_rate" => "0.006",   // 费率：0.6%
            "min_fee" => "1",        // 最低手续费：1分
            "max_fee" => "1000"      // 最高手续费：10元
        ],
        [
            "channel_type" => "02",  // 渠道类型：02-微信
            "fee_rate" => "0.006",   // 费率：0.6%
            "min_fee" => "1",        // 最低手续费：1分
            "max_fee" => "1000"      // 最高手续费：10元
        ],
        [
            "channel_type" => "03",  // 渠道类型：03-支付宝
            "fee_rate" => "0.006",   // 费率：0.6%
            "min_fee" => "1",        // 最低手续费：1分
            "max_fee" => "1000"      // 最高手续费：10元
        ]
    ];
    
    // 设置请求参数
    $request->setApplyId("b8659ea518d14c99b78b5ad000a0731a")
            ->setMerchNo("849584358140108")
            ->setRateInfo($rateInfo);
    
    return $request;
}

// =================== 示例函数 =====================
function rateInfoChangeDemo(): void
{
    global $logger;
    
    $logger->info("开始执行费率信息变更示例");
    
    // 创建配置对象和变更服务
    $config = createConfig();
    $changeService = new ChangeService($config);
    
    // 创建费率信息变更请求
    $request = buildRateInfoChangeRequest();
    
    // 发送请求 - 使用DemoRequestHandler
    $response = DemoRequestHandler::sendRequestAndHandleResponse(
        $changeService, 
        $request, 
        "费率信息变更",
        function($service, $request) {
            return $service->changeRateInfo($request);
        }
    );
    
    // 处理响应结果
    if ($response && $response->isSuccess()) {
        $logger->info("响应报文：" . json_encode($response->toArray(), JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES));
    }
    
    $logger->info("费率信息变更示例执行完毕");
}

// =================== 主程序 =====================
$logger->info("=" . str_repeat("=", 50));
$logger->info("===== 费率信息变更示例 开始 =====");
$logger->info("=" . str_repeat("=", 50));

rateInfoChangeDemo();

$logger->info("=" . str_repeat("=", 50));
$logger->info("===== 费率信息变更示例执行完毕 =====");
$logger->info("=" . str_repeat("=", 50)); 